package com.banyuan.lesson.集合.Colleection.LinkedList;

import java.util.ArrayDeque;
import java.util.LinkedList;
//有序可重复LinkedList
public class LinkedListDemo1 {
    public static void main(String[] args) {
        LinkedList<String> list1 = new LinkedList<>();
        list1.add("aaa");
        list1.add("bbb");
        list1.add("ccc");

        //不要用fori的迭代方式，时间复杂度是n平方；
        for (int i = 0; i < list1.size(); i++) {
            System.out.println(list1.get(i));
        }

        //用增强for循环,时间复杂独n；
        for (String s : list1) {
            System.out.println(s);
        }

        //栈和队列的特性；
        LinkedList<String> stack = new LinkedList<>();

        //push入栈，压栈；
        stack.push("aaa");
        stack.push("bbb");
        stack.push("ccc");

        //pop出栈，弹栈；
        String s = stack.pop();

        //后进先出；
        System.out.println(s);

        //队列操作；
        LinkedList<String> queue = new LinkedList<>();

        //入队；
        queue.offer("aaa");
        queue.offer("bbb");
        queue.offer("ccc");

        //出队；
        System.out.println(queue.poll());

        //以后的栈和队列优先使用ArrayDeque，循环数组实现的双端队列，性能优于LinkedList;
        ArrayDeque<String> arrayDeque = new ArrayDeque<>();

        //过时的方法
        /*Stack 相当于LinkedList ArrayDeque
        * Vector 相当于ArrayList
        * Hashtable 相当于Hashmap*/


    }
}
